Learning how to design knowledge and data flow [closed]
Posted
by
max
on Programmers
See other posts from Programmers
or by max
Published on 2012-10-12T22:19:52Z
Indexed on
2012/10/13
3:48 UTC
Read the original article
Hit count: 229
In designing software, I spend a lot of time deciding how the knowledge (algorithms / business logic) and data should be allocated between different entities; that is, which object should know what.
I am asking for advice about books, articles, presentations, classes, or other resources that would help me learn how to do it better. I code primarily in Python, but my question is not really language-specific; even if some of the insights I learn don't work in Python, that's fine.
I'll give a couple examples to clarify what I mean.
Example 1
I want to perform some computation. As a user, I will need to provide parameters to do the computation. I can have all those parameters sent to the "main" object, which then uses them to create other objects as needed. Or I can create one "main" object, as well as several additional objects; the additional objects would then be sent to the "main" object as parameters. What factors should I consider to make this choice?
Example 2
Let's say I have a few objects of type A that can perform a certain computation. The main computation often involves using an object of type B that performs some interim computation. I can either "teach" A
instances what exact parameters to pass to B
instances (i.e., make B
"dumb"); or I can "teach" B
instances to figure out what needs to be done when looking at an A
instance (i.e., make B
"smart"). What should I think about when I'm making this choice?
© Programmers or respective owner